home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
telecomm
/
ig214.arc
/
IG214.TXT
< prev
next >
Wrap
Text File
|
1990-05-04
|
76KB
|
1,612 lines
updated: 5-4-90
Instant Graphics! Online Interpreter
Copyright 1988-90 by Larry Mears
All rights reserved.
Version 2.14 by Larry Mears, Shareware
Now with online point and click commands,
and greater control over sound effects!
INTRO
Instant Graphics! Desk Accessory and Emulator for Interlink bring
a whole new concept in online graphics and sound! Now see TRUE
online graphics and hear sound and MIDI music over the modem! If you are
tired of the bland VT52 colors that most ST BBS' offer, then you
will be pleasantly surprised by the super fast graphics and sound
this NEW terminal emulation unlocks!
INSTALLATION
Place IG.ACC in root directory of your boot drive A: or C: and
select it from the menu bar to use, you have to stay in the accessory
to see the graphics and hear the sound effects. The desk accessory has some
features not found in the IG.EMU both have their own virtues use
which best serves your needs. I use both at the same time, you need a
1mb ST or better to do that. If you only have 512K and are using the ACC
with FLASH, drop all extra AUTO folder programs and ACCs. Boot up and
run FLASH FIRST, do not select the ACC and then run FLASH. If you do
FLASH will think there isn't enough RAM. At least this is how it is on my
1040ST running a 512K ramdisk to simulate a 520ST with 512K.
The IG.EMU loads into INTERLINK just like your ANSI or ATASCII Emulator
does. Just double click on the ??? for your "Style" of
communications and away you go! If you do this with the RECORD
feature on, then it can be done automatically for you when you
boot up Interlink. If using a 512K ST with Interlink remove extra AUTO
folder programs, all desk ACCs and choose STARTUP parameters from Interlinks
dropdown menu, set the buffer to 36K and the RS232 to 8K and save then rerun
Interlink from the desktop. This should free up enough RAM to load
version 2.14. If it still bombs do the same thing and drop the buffer
by 2K each time till it'll load in properly. Setting it to 36K should
WITHOUT ANY EXTRA transfer ".TXF" protocals loaded in should do it but I may
be wrong, I just tried to simulate the 512K RAM condition. There are
many good ramboards out there on the market and RAM is fairly cheap now
go to a meg if you can.
SOME BACK GROUND
IG does VDI graphics by way of a attention command sequence,
simular to a Hayes modem, and interprets one letter commands and values up
to 9999. It also does VT-52 graphics in their standard form or
with special attention commands, thus allowing VT-52 graphics by choice,
if the standard escape sequences aren't used. So what's so great about VDI?
Well it means lines, circles, ovals, rectangles, fill patterns, system fonts,
you can have BIG COLORED text any where on the screen. IG with a little help
from the users out there could open a new door for telecommunications.
This terminal would allow better game programs to be written for FOREM's doors.
Another use is bar and pie charts. A good idea would be to have a online
comic strip. Ascii publications such as ST-REPORT could embed graphics
commands into their text for illustration purposes. I might write a special
IG reader for ZNET and ST-Report if they would show the interest and ask me.
If you didn't read it with the IG reader then it'd just look like cryptic
BASIC. There are lot's of possibilities and if I come up with anymore good
ideas for commands I'll try incorporate them into the next version.
SYNTAX
IG is case sensitive. G# gets it's attention g# does not.
commands can be chained with the > character but they can not exceed one line,
unless you use the _ option (IG213+) as the first digit in a number passed.
In other words IG does not check for a linefeed or CR all the time, it will
try to interpret it as a command, chain character, value, or value separator.
Line noise will of course blow it's performance to shreds. Any non numerical
character can be used as a value separator, I suggest a comma or space. I like
to use a : to separate commands when chaining but you can use any non numerical
character. If you don't use the chain character you have to have some character
there anyway so why not a space, looks good and saves confusion. When using
the W command the string is ended with the @ character and if chaining the next
command comes directly after the @ no separator at all. OK, I guess you need
to see some examples to study over.
Chain example:
G#I>0:s>0:g>2:k>0:
G#A>3,8,1:B>0,0,639,149,1:A>1,1,1:C>2,2:B>30,15,610,134,1:
G#E>4,18,0:C>3,3:W>170,35,Instant Graphics!@C>2,1:
G#V>319,80,60,0,119:A>3,3,1:V>319,80,60,119,239:A>3,1,1:
G#V>319,80,60,239,360:E>0,9,0:T>2,1,2:T>2,1,52:
G#L>90,80,240,80:C>3,1:W>140,77,REST@
G#T>2,1,51:L>390,95,540,95:W>445,92,WORK@
G#L>390,60,540,60:W>445,57,PLAY@
G#p>24,19:We all wish it were that way!
G#k>1:t>2:t>5:I>0:s>0:g>0:
Notice the C directly after the @ in line number 3 and the colon at the end of
the last line to keep the carriage return from being eaten as a value separator.
If you want the carriage return and linefeed to not be present in your
display use the ">" chain indicator and put a : after the last digit in the
line. IG213+ allows splitting of lines with the _ character, the _ has to be
used
in place of the first digit in a value passed, see below.
example below, for Medium Resolution:
( This example could be shrunk in size with the & command's READ DATA option
it could elimnate all the L>'s but one. The line end points would ALL be
read from the modem THEN plotted. )
G#s>0:I>0:k>0:g>2:
G#L>206,35,225,44:L>225,44,236,112:L>236,112,226,_
169:L>226,169,206,159:L>206,159,196,92:L>196,92,206,_
35:L>206,35,226,169:L>225,44,206,159:L>236,112,196,92:
G#L>411,30,433,39:L>433,39,443,106:L>443,106,432,163:
G#L>432,163,411,152:L>411,152,400,86:L>400,86,411,30:
G#L>411,30,432,163:L>433,39,411,152:L>443,106,400,86:
G#L>329,83,334,75:L>334,75,345,80:L>345,80,350,93:
G#L>350,93,350,114:L>350,114,345,121:L>345,121,334,117:
G#L>334,117,329,104:L>329,104,329,83:L>288,84,293,77:
G#L>293,77,304,81:L>304,81,309,94:L>309,94,309,115:
G#L>309,115,304,123:L>304,123,293,118:L>293,118,288,105:
G#L>288,105,288,84:L>329,83,288,84:L>288,84,273,87:
G#L>273,87,283,92:L>283,92,309,94:L>309,94,350,93:
G#L>350,93,365,90:L>365,90,355,85:L>355,85,329,83:
G#L>329,104,288,105:L>288,105,273,108:L>273,108,283,113:
G#L>283,113,309,115:L>309,115,350,114:L>350,114,365,111:
G#L>365,111,355,106:L>355,106,329,104:L>345,80,304,81:
G#L>304,81,283,92:L>283,92,283,113:L>283,113,304,123:
G#L>304,123,345,121:L>345,121,365,111:L>365,111,365,90:
G#L>365,90,345,80:L>334,75,293,77:L>293,77,273,87:
G#L>273,87,273,108:L>273,108,293,118:L>293,118,334,117:
G#L>334,117,355,106:L>355,106,355,85:L>355,85,334,75:
G#L>278,90,283,103:L>283,103,278,111:L>278,111,273,98:
G#L>273,98,278,90:L>257,90,262,103:L>262,103,257,111:
G#L>257,111,252,98:L>252,98,257,90:L>278,90,257,90:
G#L>283,103,262,103:L>278,111,257,111:L>273,98,252,98:
G#L>360,87,365,100:L>365,100,360,108:L>360,108,355,95:
G#L>355,95,360,87:L>381,87,386,100:L>386,100,381,107:
G#L>381,107,375,95:L>375,95,381,87:L>360,87,381,87:
G#L>365,100,386,100:L>360,108,381,107:L>355,95,375,95:
G#L>257,94,261,102:L>261,102,257,108:L>257,108,254,99:
G#L>254,99,257,94:L>236,95,240,103:L>240,103,237,108:
G#L>237,108,233,100:L>233,100,236,95:L>257,94,236,95:
G#L>261,102,240,103:L>257,108,237,108:L>254,99,233,100:
G#L>381,90,384,99:L>384,99,381,104:L>381,104,377,96:
G#L>377,96,381,90:L>401,90,405,98:L>405,98,401,103:
G#L>401,103,398,95:L>398,95,401,90:L>381,90,401,90:
G#L>384,99,405,98:L>381,104,401,103:L>377,96,398,95:
G#L>236,98,238,102:L>238,102,237,105:L>237,105,235,101:
G#L>235,101,236,98:L>216,99,217,103:L>217,103,216,105:
G#L>216,105,214,101:L>214,101,216,99:L>236,98,216,99:
G#L>238,102,217,103:L>237,105,216,105:L>235,101,214,101:
G#L>401,93,403,97:L>403,97,401,100:L>401,100,399,96:
G#L>399,96,401,93:L>422,93,423,97:L>423,97,422,99:
G#L>422,99,420,95:L>420,95,422,93:L>401,93,422,93:
G#L>403,97,423,97:L>401,100,422,99:L>399,96,420,95:
G#t>5:k>1:I>0:s>0:g>0:
You can execute commands on fly in the same line by having several G#'s.
G#v 1:Turn inverse video on G#v 0:and back off.
Notice the space between the command and the number, meaning don't chain and
the colon after the numbers. The colon will be eaten by the routine that gets
numbers from the modem. It has to know when to quit and any non numerical
character gets swallowed. A colon after the commands parameters are passed
looks good anyway, right? Shades of BASIC huh? Also the commands are
case sensitive. A w is a totally different command than W , so be careful.
There is a pause command called t lets you
pause a screen, it sends a ^S^S times it and then sends a ^Q^Q. Good for
messages with multiple screens or long graphic welcome bulletins.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
I'd like sysop support spreading this program around and a little hype,
also would be nice if the SYSOPs\USERs would send a appreciation of fee
$15 to say thanks for such a innovative piece of software. I'm not forcing
anyone to do it but it would help keep me encouraged and enthusiastic toward
providing updates and bug fixes.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Report bugs and comments to:
( IG online graphics interpreter author, write me a letter or
send EMAIL to Larry Mears at FNET node 74 ) Don't be to hard
on me I have many many many months into this project and
made very little from it, actually it is a loss money wise.
Don't be to picky but if you do find a bug capture the IG script
that caused it with the graphics OFF then send it to me on disk or
upload it to WRB 205-837-2025. You could upload it into a EMAIL
message if you like. Be sure to include a explaination of the bug
as it may not be apparent to me, it may be a syntax error or
something like that. Oh, need to know it is was the EMU or ACC
and how much memory you have, what AUTO folder programs you run
and other ACCs.
Larry Mears
11027 Crestfield Dr.
Huntsville, Alabama
35803 USA
( Authors of IG "b command options 0-18" and 1st implementation of IG
interfacing to Interlink, drop us a message.)
also check out their:
INSTANT GRAPHICS AND SOUND EDITOR
Copyright 1989 Kevin Moody and Anthony Rau
Kevin Moody and Anthony Rau, Node 436
The Final Frontier BBS (904)-282-3623
a Official IG support BBS.
I'll try to fix bugs if I can but, I can not guarantee a fix and I
will not be held responsible for any problems caused by use of this software.
Just use Flash's or InterLink's buffer(unfiltered mode) to edit the graphic
files. The Moody/Rau IGS editor is sort of like a paint program and worth
having, a guy with a understanding of IG and a text editor can out do the
IGS editor it is still great for doing CURVES or doing simple BBS menus.
A IG programmer can always go in there and tweak the IG script with a text
editor to soup up performance. Look for IGS_PRO6.ARC on GENIE. It produces
IG script compatible with IG212 and above. New IG versions are written so
that old IG script files are compatible. The IGS editor is a SEPERATE
Shareware project from the IG EMULATOR and ACC, supporting the editor does
not support the IG terminal and vice versa.
Note that a ^C executed when IG is writing it's prompts will crash or exit
the program, this could be fixed at the cost of several K of memory by using
printf instead of Cconws, but memory is tight for half meg users.
============================================================================
KEYBOARD COMMANDS for IG.ACC
----------------------------
FUNCTION KEYS
F10 cut graphics off ....Allows online entry of graphic commands.
F9 cut graphics on ....Executes any graphics commands from the modem.
Important! Default mode is graphics on.
If typing in a graphics message on a BBS push F10 first.
To view it push F9 and tell the BBS to list the message.
Do not use ^S and ^Q while graphics commands are executing!
F8 execute from file....Read a text file execute imbedded graphics commands.
This allows off line composing.
F7 read file only ....Read a text file ignore graphics commands.
Note: When reading or executing text files it's ok to use ^S ^Q and ^C .
F6 duplex toggle..... use half duplex on GENIE.
F5 locks out the Resolution switch command.
F4 MIDI playback on/off toggle. ( Default MIDI playback on! )
OTHER KEYS
INSERT set baud ....Set baud 300 thru 9600 baud.
Note: No default at startup, this is so when
using FLASH and the ACC the baud remains the same
as the host program. None of the other RS323 parameters
are changed by this option only baud and I've not tested
IG past 2400 baud.
+ Plus Sign ....MIDI out SYNC, If music is garbled hit it.
CLR HOME restore ....Clear screen, restore resolution and colors.
HELP screen ....Short list of keyboard commands.
UNDO exit ....Exits Instant Graphics!
################################################################################
!!!! PLEASE READ NEW CHANGES FOR IG214.EMU FOR INTERLINK !!!!
See the entries under UNDO and the INSERT keys also
half duplex must now be set with control+shift+p .
This was necessary in order to steal the MOUSE from
Interlink so POINT and CLICK menus could be done
online. It also keeps that annoying STATUS line from
popping up in your graphics when you've already got rid
of it! It gives IG the FUNCTION keys too, so I might
use them for special features later on.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
KEYBOARD COMMANDS for IG.EMU
----------------------------
UNDO ....Give MOUSE and FUNCTION keys to Interlink
till another character is received via the serial
port while graphics are ON.
Tap once when BBS is waiting for input,
such as at logon when the BBS is
asking for name/password, then hit your
Function key to shoot out your name/password to
the BBS. Use the same way for file transfers,
tap UNDO then hit F2. The Interlink status
line can be updated also this way. Tap UNDO
while BBS is waiting for input from you and
your Interlink status line will update until
another character is received via the serial
port. Same goes for using the Interlink Mouse buttons
to jump to Interlink's GEM menus, dialer and the
double button file transfer click.
CLR HOME restore ....Clear screen, restore resolution and colors.
INSERT ....Cuts graphics ON or OFF, sound indicator
doodle doodle doo = ON dunt = off
While graphics are ON the Interlink status
line will not be updated and the MOUSE
belongs to IG as well as all other keys
function keys included. A control+shift+INSERT
will cut graphics off but doesn't give Interlink
the mouse or functions keys and status line,
a almost useless feature, a quirk really.
Important! Default mode is graphics on.
If typing in a graphics message on a BBS push
INSERT first.
+ Plus Sign ....MIDI out SYNC, If music is garbled hit it.
control+shift+m MIDI playback on/off toggle. Default MIDI playback on!
control+shift+r ....locks out the Resolution switch command.
control+shift+p .....duplex toggle, use half duplex on GENIE.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INSTANT GRAPHICS!
-----------------
g Graphic scaling G#g 1: or G#g 2: or G#g 0:
------------------
g = command identifier
Turn graphic scaling on or off.
When on all X Y coordinates are plotted to
an imaginary screen 10,000 by 10,000.
0,0 is in the upper left corner, while the
lower right corner is 9999,9999 This means
graphics plotted with graphics scaling should
look approximately the same in all resolutions!
In practice though it's only really good for
general positioning. The new Y coordinate *2
will save you time when converting graphics. Make
your graphics for medium resolution and then
when you do the mono version just add a
G#g 2: at the top of your script and a
G#g 0: at the end if you want to cut it back off.
this should fix the medium res graphics to run in
640x400 mono mode with only the adjustment of
the 'S'etcolors, 'C'olor, and maybe the 'c' command
Keep in mind that none of these 'g' options work
within a "& LOOP".
Parameter:
0 = off
1 = on
2 = Y coordinate *2 if in monchrome 640 x 400 mode
will not change value if in low or medium
resolution.
G grab screen G#G 0,3,0,0,100,100,100,50: screen to screen
-------------- G#G 1,3,0,0,100,100: screen to memory
G#G 2,3,200,50: memory to screen
G#G 3,3,50,50,75,75,150,100: piece of memory to
screen
G = command identifier
Screen grab, "Bit-Blit".
Grabs a rectangular portion of the screen
copies it to another portion of the screen
or to memory, or copies memory to screen,
depending on 1st parameter. The whole screen
can be blitted to memory and back!
1st parameter sets type of blit to do:
0 = screen to screen
1 = screen to memory
2 = memory to screen
3 = piece of memory to screen
2nd parameter sets writing mode for the blit operation.
mode logic...............Description
0 dest=0..............Clear destination block
1 dest=SAND D
2 dest=S AND (NOT D)
3 dest=S.............Replace mode
4 dest=(NOT S) AND D...Erase mode
5 dest=D...............Destination unchanged
6 dest=S XOR D.........XOR mode
7 dest=S OR D..........Transparent mode
8 dest=NOT (S OR D)
9 dest=NOT (S XOR D)
10 dest=NOT D
11 dest=S OR(NOT D)
12 dest=NOT S
13 dest=(NOT S) OR D....Reverse Transparent mode
14 dest=NOT (S AND D)
15 dest=1...............Fill destination block
The rest of the parameters depend on the
1st parameters setting:
IF 1st PARAMETER = 0 "screen to screen"
3rd = X source, upper left corner
4th = Y source, upper left corner
5th = X source, lower right corner
6th = Y source, lower right corner
7th = X destination, upper left corner
8th = Y destination, upper left corner
IF 1st PARAMETER = 1 "screen to memory"
3rd = X source, upper left corner
4th = Y source, upper left corner
5th = X source, lower right corner
6th = Y source, lower right corner
IF 1st PARAMETER = 2 "memory to screen"
3rd = X destination, upper left corner
4th = Y destination, upper left corner
IF 1st PARAMETER = 3 "piece of memory to screen"
3rd = X source, upper left corner
4th = Y source, upper left corner
5th = X source, lower right corner
6th = Y source, lower right corner
7th = X destination, upper left corner
8th = Y destination, upper left corner
I initialize G#I 0:
-------------
I = command identifier
Initializes color pallet and most
attributes to what ever they were before
the Instant Graphics ACC was executed.
Issue this command at the start of each graphic
sequence and you'll have a common starting point.
Parameter:
0 = Set resolution, pallet, and attributes
1 = Set resolution and pallet
2 = Set attributes
3 = Set Instant Graphics! default pallet
A attributes for fills G#A 1,1,0:
----------------------
A = command identifier
Sets attributes for fills and sets
border option.
1st parameter selects pattern type:
0=hollow, 1=solid, 2=pattern, 3=hatch
2nd parameter selects pattern index number it
ranges 1-24 for type pattern and 1-12 for type hatch.
These patterns are illustrated in the ST BASIC manual,
page 95 in mine.
3rd parameter specifies if a border is to be drawn
around the filled area. 1=yes, 0=no
H hollow set G#H 0:
------------
H = command identifier
When on non solids are drawn, a circle will be
drawn instead of a disk.
Parameter 1=on 0=off
M drawing MODE G#M 1:
--------------
M = command identifier
Parameter sets drawing mode.
1 = replace 2 = transparent
3 = XOR 4 = reverse transparent
T line, marker TYPES G#T 2,1,4:
---------------------
T = command identifier
1st parameter selects lines or polymarkers to change.
1 = polymarkers ( effects output of the P command )
2 = lines ( effects D and L commands )
2nd parameter picks type of line or polymarker
depending value of 1st parameter.
for polymarkers:
1 = point 2 = plus sign
3 = star 4 = square
5 = diagonal cross 6 = diamond
for lines:
1 = solid 2 = long dash
3 = dotted line 4 = dash-dot
5 = dashed line 6 = dash-dot-dot
3rd parameter selects size and line end styles.
-size-
for polymarkers: 1 thru 8
for lines: 1 thru 41
-line end styles-
0 = both ends square
50 = arrows on both ends
51 = arrow on left, squared on right
52 = arrow on right, squared on left
53 = arrow on left, rounded on right
54 = arrow on right, rounded on left
60 = rounded on both ends
61 = rounded on left, squared on right
62 = rounded on right, squared on left
63 = rounded on left, arrow on right
64 = rounded on right, arrow on left
E text EFFECTS G#E 8,18,1:
--------------
E = command identifier
Sets VDI text effects for text put on the screen
with the W command.
1st parameter selects font effect they can be combined
0 = normal 1 = thickened (bold)
2 = ghosted 4 = skewed
8 = undelined 16 = outlined
2nd parameter sets text size in points 1/72 of a inch.
Values the default system font may be printed in:
8 9 10 16 18 20
3rd parameter sets the text rotation.
0 = 0 degrees 1 = 90 degrees
2 = 180 degrees 3 = 270 degrees
4 = 360 degrees
R set Resolution G#R 1,0:
----------------
R = command identifier
Allows to switch between low and medium resolution.
Low resolution allows the use of 16 VDI colors only
if resolution was set from the desktop, try using
the modified VT-52 commands to set background color.
Medium resolution only allows 4 colors.
If the resolution selected is the one the system is
currently in, IG ignores it. This is so you
can set the set the color palette and not do a
resolution switch. Resolution switching creates
havoc for some commercial terminals you may be using
IG with.
1st Parameter selects resolution to switch to:
0 = low resolution 1 = medium resolution
2nd Parameter is the system palette flag:
0 = no change 1 = default system colors.
2 = IG default color palette
C color set G#C 0,2:
-----------
C = command identifier
Selects the Pen number to perform the screen
operation with.
1st parameter selects screen operation pen to change.
0 = Polymarker color, used for the (P plot command).
1 = line color
2 = fill color
3 = text color, used with the ( W command ).
2nd parameter selects the Pen number 0 thru 15.
S set PEN color G#S 1,0,0,7:
--------------------
S = command identifier
1st parameter selects pen color to change 0 thru 15.
2nd parameter selects red color level 0 thru 7.
3rd parameter selects green color level 0 thru 7.
4th parameter selects blue color level 0 thru 7.
P polymarker PLOT G#P 149,99:
-----------------
P = command identifier
Plot a point or polymarker shape on the screen.
See also the entry for the T and C commands.
1st parameter = X coordinate
2nd parameter = Y coordinate
L draw LINE G#L 0,0,300,150:
-----------
L = command identifier
Draws a line between specified points.
See also the entry for T and C commands.
1st parameter = begining X coordinate
2nd parameter = begining Y coordinate
3rd parameter = ending X coordiante
4th parameter = ending Y coordinate
D line DRAWTO G#D 149,99:
-------------
D = command identifier
draws a line from the last polymarker plot,
draw LINE or DRAWTO command. You should use
the P or L command to first establish a point
for DRAWTO to begin at.
See also the entry for T and C commands.
1st parameter = X coordinate
2nd parameter = Y coordinate
W WRITE text G#W 50,100,DEVO E-Z Listening Disc@
-------------
W = command identifier
Writes text on screen at any X Y coordinate.
Carriage Return and Linefeed are ignored (IG214) so
you can split the text to be written across two lines,
the maximum length is 128 characters.
The @ symbol ends the text to be written.
See also the E and C commands.
1st parameter = X coordinate
2nd parameter = Y coordinate
3rd parameter = text ended with @
Chain example:
G#W>20,50,Chain@L 0,0,300,190
F flood FILL G#F 600,0:
------------
F = command identifier
Fills a area by replacing the color found
at specified X Y coordinates till it hits
another color of edge of screen.
1st parameter = X coordinate
2nd paraneter = Y coordinate
Z filled rectangle G#Z 10,10,200,100:
------------------
Z = command identifer
Fills a area. The A commands
border set has no effect on this
fill.
1st parameter = upper left corner X coordinate
2nd parameter = upper left corner Y coordinate
3rd parameter = lower right corner X coordinate
4th parameter = lower right corner Y coordinate
B box G#B 0,0,100,100,0
------
B = command identifier
General purpose command for drawing
rectangles. All attributes effect this
command.
1st parameter = upper left corner X coordinate
2nd parameter = upper left corner Y coordinate
3rd parameter = lower right corner X coordinate
4th parameter = lower right corner Y coordinate
5th parameter = rounded corners flag 0=no 1=yes
U rounded rectangles G#U 100,0,300,150,1
--------------------
U = command identifier
Draws a rounded rectangle.
1st parameter = upper left corner X coordinate
2nd parameter = upper left corner Y coordinate
3rd parameter = lower right corner X coordinate
4th parameter = lower right corner Y coordinate
5th parameter = 0 selects filled rounded rectangle
with no borders.
1 selects rounded rectangle
affected by all attributes and
H command as well as line patterns
set with the T command.
K arc G#K 300,99,75,90,180:
------
K = command identifier
Draws a ARC, which is part of a circle.
1st parameter = X coordinate for the circle center
2nd parameter = Y coordinate for the circle center
3rd parameter = radius of the circle
4th parameter = begining angle to start drawing at
5th parameter = ending angle to to stop drawing at
J elliptical arc G#J 0,199,400,600,0,270:
-----------------
J = command identifier
Draws a elliptical ARC, which is part of a oval.
1st parameter = X coordinate for the oval center
2nd parameter = Y coordinate for the oval center
3rd parameter = X radius of the oval
4th parameter = Y radius of the oval
5th parameter = begining angle to start drawing at
6th parameter = ending angle to to stop drawing at
O CIRCLE G#O 300,100,75:
----------
O = command identifier
Draws a disc or circle depending if the
H command is active or not.
1st parameter = X coordinate of circle center
2nd parameter = Y coordinate of circle center
3rd parameter = radius of circle
Q ellipse G#Q 300,100,200,60:
----------
Q = command identifier
Draws an ellipse, which is a OVAL.
See H and A commands also.
1st parameter = X coordinate of oval center
2nd parameter = Y coordinate of oval center
3rd parameter = X radius of oval
4th parameter = Y radius of oval
V pieslice G#V 50,50,100,180,270:
-----------
V = command identifier
Draws a pieslice, which is part of a circle.
1st parameter = X coordinate for the circle center
2nd parameter = Y coordinate for the circle center
3rd parameter = radius of the circle
4th parameter = begining angle to start drawing at
5th parameter = ending angle to to stop drawing at
Y elliptical pieslice G#Y 80,80,100,200,0,180:
----------------------
Y = command identifier
Draws a elliptical pieslice. which is part of a OVAL.
1st parameter = X coordinate for the oval center
2nd parameter = Y coordinate for the oval center
3rd parameter = X radius of the oval
4th parameter = Y radius of the oval
5th parameter = begining angle to start drawing at
6th parameter = ending angle to to stop drawing at
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Modified VT-52 COMMANDS
------------------------
c COLOR G#c 1,1:
--------
c = command identifier
Sets text and background color
1st parameter selects text or background
0 = background 1 = text
2nd parameter = color register 0 thru 15
Note: color registers can be changed with the
S command but the ST's VDI pen numbers do not
corespond with color register numbers here a
reference chart:
register pen register pen
0 0 8 9
1 2 9 10
3 6 10 11
4 4 11 14
5 7 12 12
6 5 13 15
7 8 14 13
15 1
d delete line G#d 4:
--------------
d = command identifier
Deletes specified number of text lines, the bottom
line on the screen is scrolled upward.
Parameter = number of lines to delete.
i line insert G#i 1,3:
--------------
i = command identifier
Inserts lines at cursor position or top of screen.
1st parameter selects type of insert.
0 = move cursor up a line until it hits
the top of the screen, then insert
blank lines.
1 = Insert line at cursor, bottom line is
scrolled off.
2nd parameter = number of times to perform
this operation.
k cursor G#k 0:
---------
k = command identifier
Turns text cursor on or off.
Parameter:
0 = off 1 = on
l line clear G#l 0:
------------
l = command identifier
Clears text lines.
Parameter:
0 = Clear whole line and carriage return.
1 = Clear line from begining to cursor inclusive.
2 = Clear line at cursor to end of line.
m cursor motion G#m 1,20:
----------------
m = command identifier
Homes or moves cursor a line at a time
or a column at a time, from current position.
1st parameter selects direction.
0 = Home cursor.
1 = up
2 = down
3 = right
4 = left
2nd parameter sets number of times to do this
operation.
p position G#p 70,19:
-----------
p = command identifier
Positions cursor at column, line.
Like X Y only with characters.
1st parameter = column 0 thru 79
2nd parameter = line 0 thru 24
r remember G#r 0:
-----------
r = command identifier
Remembers or recalls cursor position.
Parameter:
0 = remember cursor position
1 = recall cursor position, and put it there
s screen clear G#s 0:
---------------
s = command identifier
Clears whole screen or portions of it.
Parameter:
0 = Clear whole screen home cursor.
1 = Clear from home to cursor.
2 = Clear from cursor to bottom of screen.
v inverse video G#v 1:
----------------
v = command identifier
Turn inverse video on or off.
Parameter:
0 = off
1 = on
w line wrap G#w 1:
------------
w = command identifier
Turns line wrap on or off.
Parameter:
0 = off
1 = on
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CUSTOM COMMANDS
---------------
t time a pause G#t 2:
---------------
t = command identifier
Tells IG to send ^S^S, times it for X seconds
and then tells IG to send ^Q^Q. Any key
will abort the pause prematurly.
MAX time is 30 seconds if more of a pause is needed
chain a few together. G#t>30:t 5:
I'm hoping this will eliminate the BBS from timing
out and logging a user off.
Parameter = number of seconds to pause, 30 max.
< INPUT Command G#< 1,0,1:
----------------
Gets input from user's keyboard and transmits it as soon
as the chain " > " from the last G# is broke. Should
be used near the end of a MENU, as the BBS will continue
to send to the terminal while the INPUT command is
waiting on the user. This is so the BBS will be waiting
for INPUT when IG sends the user's response at '>' exit.
The INPUT command is good for letting you use
any 4 colors you want for a BBS MENU and then to issue
some reset commands. ie G#<>1,0,1:I>0:k>1:s>0: Also
optionally INVOKES MOUSE routine for the X 4 command
so ZONES can be pointed to and clicked on, you must
use X 4 to define and load the zone strings first and
you should use IG to draw some borders around the
zones so the user will know where and what he is
selecting when he clicks on a ZONE, that way you
have the job of cosmetics, that's half the fun anyway.
The selected Zone's associated data string is
transmitted to the BBS as soon as IG exits
the chain from the last G# . ZONE 47 is the default
ZONE, it's associated data string will be sent if no
ZONES match where the user clicked. You should always
define ZONE 47.
You may find the X 3 and the X 6 command useful too.
1st parameter = Transmitt carriage return at the end
of the string INPUTted? 1 = YES 0 = NO
2nd parameter = INPUT type
0 = One key, (hot key input for FoReM)
1 = String, with a return to
end input from user,
max string length = 128
2 = MOUSE ZONE, activate a POLYMARKER
mouse pointer, use the " T " command
to select mouse type and size and the
" C " command to set mouse color.
User moves mouse and clicks on a
"ZONE". Selection is processed
when button is released.
The associated ZONE string
is copied into INPUT's
string to be transmitted to BBS
at the end of the IG script chain.
3rd parameter = Output options
0 = Don't show input typed from user
on his screen. Has no effect on
Mouse ZONES.
1 = Show input typed from user on screen.
Has no effect on Mouse ZONES.
2 = Show input but throw it away, don't
transmit it at the end of the chain.
Does effect Mouse ZONE.
3 = Don't show input from user, and throw it
away too. Does effect Mouse ZONE.
Note: If 2 ZONES areas are over lapping on the screen the
ZONE with the lower value ID number will get selected when
the mouse is clicked on both ZONEs at the same time.
+----+--------------------+
user clicks in here ---> |ID=1| |
ZONE 1 gets selected +----+ ID=10 |
| |
+-------------------------+
+----+--------------------+
user clicks in here ---> |ID=7| |
ZONE 2 gets selected +----+ ID=2 |
| |
+-------------------------+
? Ask IG G#? 0:
--------
? = command identifier
Asks the Instant Graphics terminal
questions. Transmit it to the
BBS ( Host system ).
1st parameter selects the question to ask.
0 = Version number, IG will transmit in
ASCII to the host system the version
number it is.
1 = Ask IG where the cursor is and the
mouse button state. When this question
is asked a 2nd parameter is passed also,
like G#? 1,0 the zero means just check
the cursor and mouse buttons and send it to
host system immediatly. If the second
parameter is a 1 then the user can move the
cursor with the mouse until a button is
pressed then the cursor location and button
state is transmitted. In other words a
point and click cursor!!! The cursor and
and mouse button state is sent in three
characters, subtract 32 from the ASCII
value of these characters to arrive at
COLUMN number 0-79 ROW 0-24 BUTTON 0-3
With this command the cursor should be
enabled with the G#k 1 command.
2 = Ask IG where the mouse is and button state.
A second parameter is required when this
question is asked, like G#? 2,0 the zero
indicates that IG is to send the BBS the
mouse coordinates immediatly a 1 will
activate a polymarker for a mouse pointer
That you select with IG's "T" command.
The user can move the pointer around till
he clicks a button then the host system is
sent the X,Y,Button in a ASCII string just
like this 420,150,1: It's up to the
host system to convert the ASCII string
into actual numbers. The "g" command has
no effect on this command in version 2.12.
3 = Asks IG what resolution the terminal is in
0: low resolution 320x200
1: medium resolution 640x200
2: high resolution 640x400
& loop a command G#& 0,198,6,0,L,4,0,0,x,y:
-----------------
XOR stepping example:
G#G 1,3,0,0,50,50:
G#&>198,0,2,0,G|4,2,6,x,x:
& = command identifier
Loops a operation specified number of times with
stepping, special options for XOR ing and the
'W'rite text command. The CHAIN character > only
works directly after the &>, you can't loop a
chain of commands, only 1 command. Also you can't
loop a loop. Still this command is very powerful
and worth the effort to learn.
1st parameter = FROM value
if from value bigger than TO value
loop will detect and step backwards.
2nd parameter = TO value
3rd parameter = step value, positive number only.
4th parameter = DELAY in 200 hundredths of a between
each step of the loop.
5th parameter = command Identifier to loop.
optional specification character after 5th
parameter instead of comma:
| = XOR stepping
@ = get text for W command everytime
otherwise text written from loop
with the W command is last text
written with W command before the
loop was executed. W command now
ignores CR and LF so loop command
can be used for easy Written text
placement with the loop's stepping.
6th parameter = number of parameters command that
to be looped requires. You should at
least specify the number the command requires
ie L command requires 4 , ie W command 2.
You can specify multiples of the required number
such as 8 or 12 for the L command Max up to
2048. This will work like BASIC's READ DATA
statements between each loop step. Also note
a _ underscore may be used to split parameters
across lines if it is used in place of the first
digit of value, this will make huge detailed
files smaller (DEGAS conversions).
REMAINING parameters = whatever the command being looped
requires. If you use a "x" as a parameter
it will be stepped in the direction of the
FROM TO values, if you use a "y" the loop
will step the value in a reverse direction.
You can use both "x" and "y" at the same time.
If you use a number it will remain as a constant
for the command beign looped through out the
loop execution.
loop Written text option example:
G#E>0,18,0:C>3,2:s>0:
G#&>20,140,20,0,W@2,0,x,A. Item 1@
B. Item 2@
C. Item 3@
D. Item 4@
E. Item 5@
F. Item 6@
G. Item 7@
G#W>200,140,Power Graphics with IG!!!@
G#& 140,20,20,0,W,2,200,x:
G#W>10,180,That's so DEVO!!!@
Example of loop used to READ DATA and step within at the same time in
both directions, once you get used to the "& loop" you will use it
a lot!!
G#I>0:s>0:k>0:L>300,10,340,10:S>2,7,4,5:S>1,0,0,0:
G#&>85,300,5,0,D,24,340,10:340,60:420,60:420,85:_
340,85:340,180:85,180:x,85:220,85:220,60:x,60:x,10:
G#L>300,180,300,85:A>1,1,1:C>2,2:F>320,20:E>0,10,0:M>2:
G#C>3,1:W>210,141,Because of@
G#W>210,156,God's Love@
G#W>210,171,we are.@M>1:
G#t>3:G>1,3,80,8,421,181:s>0:
G#&>0,220,4,0,G,16,2,3,x,x:2,3,y,y:2,3,x,y:2,3,y,x:t>2:s>0:
G#&>0,638,4,0,G,8,2,3,x,9:2,3,y,9:
G#t>3:s>0:k>1:G>2,3,80,8:p 0,20:
...............................................................................
MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI MIDI
N noise command G#N>2:
---------------
N = command identifier
The N command is for handling sound.
Currently only MIDI, but other things
may be handle by N in the future,
1st parameter = N operation to perform.
If 1st parameter = 0 or 1 a 2nd parameter is required,
which is number of MIDI data bytes to read into
the MIDI buffer, MAX of 9999.
Load only: N 0,9998,datadelaydatadelaydatadelay....
Load and execute: N 1,9998,datadelaydatadelaydatadelay....
The 0 means load the MIDI buffer only,
then the number of bytes to load followed
by a comma, then the MIDI data in the form
data byte, delay byte, back to back with the
data byte always first. The delay is in 200ths
of a second so a delay of about 1.25 seconds
between each data byte is the max. After
the MIDI buffer is loaded with a N 0 or 1 command
a N 2: command issued later will replay the buffer
without reloading, like G#N 2: If a user CONTROL C's
or CONTROL X's the MIDI data while it is being loaded
the MIDI buffer will be set to 0 and N 2: will play
nothing. However it a user aborts while MIDI is
being played the MIDI buffer will remain intact.
If a user has the MIDI option off (F4 function key
on the ACC, control+shift+m for the EMU) MIDI data
will be still loaded but not executed. If line noise
creeps into the MIDI buffer when it's loaded it will
garble the sound, the user might be able to recover
by pressing the + key to try to get the MIDI flow
out to the ports in proper sync datadelaydatadelay,
line noise can get it in reverse order.
*** Download MS2IG.ARC for a Music Studio to IG file
converter.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
eXtended Commands
-----------------
Extended commands are invoked by a captial
X and a number ranging from 0 to 9999, this is
sort of like the old 8 bit XIO thing.
Opens a door for 10,000 new commands!!!
0 SPRAY PAINT G#X 0,400,50,200,145,200:
---------------
X 0 = command identifier
Plots polymarkers at random in
a rectangular area with specified concentration.
1st parameter upper left corner X coordinate.
2nd parameter upper left corner Y coordinate.
3rd parameter X range from upper left corner, 255 max.
4th parameter Y range from upper left corner, 255 max.
5th parameter concentration, 9999 maximum.
1 SET COLOR REGISTER G#X 1,4,0:
--------------------
X 1 = command identifier
Sets a color register with Xbios 7.
Use to set a specific register. The S command
differs in that it sets a PEN's register.
1st parameter = color register 0 thru 15.
2nd parameter = color value 0 thru 9999,
note that the ST only uses up
to 1911, larger values may prove
useful on STE.
2 SET RANDOM FUNCTION RANGE G#X 2,0,50:
---------------------------
Sets the range of the numbers returned when the
'r' is used in place of constant value parameter
given to a IG command. Above example sets r to
a range of 0 to 50. The range value can be
from 0 up to 9999.
To use it in the line command
or any other like so: L 0,r,400,r:
another example with the & "loop" command:
G#s>0:X>2,0,639:P>0,0:& 0,128,1,0,D,2,r,r:
3 RIGHT MOUSE BUTTON MACRO G#X 3,2,1,1,30,C'mon Baby let's do the Twist!:
--------------------------
X 3 = command identifier
Set's a string of ANY characters to be transmitted
when the RIGHT mouse BUTTON is pressed. Intended
for pulling up a FUNCTION menu on a BBS, but could
be used to tell a MAINFRAME to TYPE a IG script
file for a POINT and CLICK navigation menu.
1st parameter = operation
Deactivate --> if 1st parameter is 0 then
mouse macro is shut off and
no other parameters are to follow.
example: X 3,0:
Reactivate --> if 1st parameter is 1 then
mouse macro is ON and requires
a 2nd parameter to tell it whether
or not to transmit a carriage
return at the end of the string.
examples:
X 3,1,0: = no CR
X 3,1,1: = send CR at end.
LOAD with,activate,deactivate --> if 1st parameter is a 2 then a whole
bunch of parameters follow.
2nd parameter cuts the mouse macro
on or off. 0=off 1=on
3rd parameter tells it whether or not
to send a carriage return at the
end of the string. 0=no 1=yes
4th parameter is the length of the
string in characters that the
mouse macro will be sending, don't
count the seperator at the end of
the string.
5th parameter is the string to send.
it can contain any characters at
all and has to be at least one
character and not more than 80.
At the end of the string a
seperator is required anything can
be used I suggest a : for good
looks.
examples below:
X 3,2,1,1,3,m/a:
X 3,2,1,1,5,f/L:
X 3,2,1,1,1,?:
X 3,2,1,1,25,c:\bin\type c:\ig\menu.ig:
4 DEFINE and LOAD ZONE data G#X 4,0,0,0,79,49,3,f/L:
----------------------------
X 4 = command identifier
Defines a rectanglar area and associates a
string of characters with it, a ZONE.
The string is sent to the bbs by the
" < " command if the mouse option is
used. This allows point and click operation of
remote systems.
Zone ID -> 1st parameter = zone number to define/load
This is a number between 0-47.
Define Rectangle -> 2nd parameter = upper left corner X coordinate
3rd parameter = upper left corner Y coordinate
4th parameter = lower right corner X coordinate
5th parameter = lower right corner Y coordinate
Load string data -> 6th parameter = number of characters in string to
transmit to bbs, maximum 80.
7th = the string itself with a ending : seperator,
don't count the seperator as part of the
string length required for parameter
number 6.
5 FLOW CONTROL SHUTDOWN G#X 5,0: or G#X 5,1:
-----------------------
X 5 = command identifier
Back by request, no flow control.
Stops the IG terminal from sending
Control-S's and Control-Q's on
all commands. This should be used with
caution. It's good for issuing a short
pause " t " command and let the RS232 buffer
get ahead of the terminal, when the pause is
over a burst of speed will occur as the
terminal catches back up. Data may be lost
this way so be careful.
1st parameter = flow control on/off
1 = ON 0 = OFF
6 LEFT MOUSE BUTTON CR/LF G#X 6,1: or G#X 6,2: or G#X 6,0:
-------------------------
X 6 = command identifier
Activate / deactivate left MOUSE button
as a CARRIAGE RETURN and or Linefeed.
1st parameter =
0 = OFF normal mode, default
1 = ON as a CARRIAGE RETURN
2 = ON as a CARRIAGE RETURN with LINEFEED.
Note: This doesn't affect the < INPUT command's
mouse zone option either way. It should
work ok with this active. I wanted to
be able to leave my hand on the mouse and
hit the button to read the next message
while online and not have to mess with the
right mouse macro 'X 3'. You can just set the
mouse in your lap and click to read messages.
You probably wouldn't want this active with the
'?' ASK IG command.
------------------------------------------------------------------------------
SOUND EFFECTS COMMAND
COMMAND IS: G#b x:
x Description
--------------------
0 Alien Invasion These 19 sounds were added to IG
1 Red Alert by: Kevin Moody & Anthony Rau.
2 Gunshot
3 Laser 1
4 Jackhammer
5 Teleport
6 Explosion
7 Laser 2
8 Longbell
9 Surprise
10 Radio Broadcast
11 Bounce Ball
12 Eerie Sound
13 Harley Motorcycle
14 Helicopter
15 Steam Locomotive
16 Wave
17 Robot Walk
18 Passing Plane
. . . . . . . . . . . . . . . . . . . .
19 Landing These sounds and options added
by Larry Mears 4-22-90.
~~~~~~~~~~~~~~~~~~~~~~~
Sound Effects Utilities
-----------------------
ID Description
-- --------------------------
20 Alters Sound Effects 0-19
Example: alters sound effect
number 7 " G#b 7: "
G#b>20,1,7,12,1,30,0:
breakdown of parameters:
b 20,play_flag,snd_num,element_num,negative_flag,thousands,hundreds
"The sounds in IG use GIST.
GIST is the GI Sound Tool by:
Synthetic Software
880 Wisconsin Street
San Francisco, CA 94107
415-285-8832
ANTIC was selling it. If they aren't
anymore contact Synthetic Software.
Buy GIST and you can create all sorts
of neat sounds that can be converted into
IG loadable format. Without GIST it's a
shot in the dark. GIST let's you edit
sounds with a graphics interface it's
a great piece of software, buy it!"
Command Identifier = b 20
Let's you alter any sound effect. The
sound effects each have 56 elements that
corespond exactly with the elements
that GIST saves out in the '.C' file as
a " int array ". You take the values
in the GIST '.C' sound file and put them
into IG one at a time with the b 20 command
PARAMETER NUMBER 3. If you don't have GIST
you can play around with the & LOOP and
this command to come up with variations.
1st parameter = play_flag. If this is anything other
than 0, then the sound will be played
with the new setting, otherwise it
alters it but does not play. Setting
this flag to 1 is useful for using the
& LOOP and running through a series of
changes to hear what the effect
your alteration has on the sound.
2nd parameter = snd_num. This is the sound effect
you wish to alter. It can be any
effect 0 to 19.
3rd parameter = element_num. This tells which one of
56 elements to alter in the sound
effect's array they are 0-55.
4th parameter = negative_flag. If this is a 0 then
the value changed in the effect will
be positive, a 1 here or any number
other than 0 will set the value in
the sound effect array as a
negative number.
5th parameter = thousands. This is a number from
0 to 32 that is multiplied by 1000
by IG internally and added to the
next parameter to make up the actual
value that is stored into the element
number specified by parameter 3.
6th parameter = hundreds. The hundreds, tens, and ones
of the value to be placed into the
sound effect element specified by
parameter 3. You can exceed this and
use 4 digits here, it just adds the
5th and 6th parameters together to get
a range of values from -32767 to
+32767 that GIST requires.
PLEASE NOTE that sound effects 0-4 are looped by IG
internally 1000 times each for effect. It's like this
in basic FOR I=0 to 9999:SOUND_EFFECT:NEXT I This
will give a different effect than you hear if you
are using the GIST sound editor so bear this in mind.
To transfer a whole new sound from GIST ".C" format
this little IG command will have to be called 56 times.
Look in this ARC to see "IF" I wrote a GFA BASIC v2
GIST2IG.BAS converter. You could use a effect that was
close to the one you needed and only change a few
elements. The & LOOP and this command should be able
to produce some amazing Sounds with some effort.
21 STOP ALL SOUND AT ONCE example:
-------------------------- G#b>21:
command identifer = b 21:
Shuts off all sound effects that are being played.
22 RESTORE SOUND EFFECT example:
----------------------- G#b>22,19:
Command identifier = b 22
Restores a sound effect to IG's default.
Use to insure that a sound effect is what
it should be or to restore after a
alteration as a courtesy to your SYSOP
and other IG users. You can use the
& LOOP to restore all the effects real
fast.
1st parameter = sound effect number to restore.
range is 0 to 19.
---------------------------------------------------------------------------
===================
END OF TEXT G#I 0: